#include "link.h"
//
Pliink create()
{
	Pliink p=malloc(sizeof(liink));
	if(p==NULL)
	{
		printf("创建失败\n");
		return NULL;
	}
	p->len=0;
	p->next=p;
	printf("创建完成\n");
	return p;
}
int front_insert(Pliink p,int e)
{
	if(p==NULL ||p->len<0)
	{
		printf("头插失败\n");
		return -1;
	}
	Pliink t=malloc(sizeof(liink));
	t->data=e;
	t->next=p->next;
	p->next=t;
	p->len++;
	return 0;
}
//
int rear_insert(Pliink p,int e)
{
	if(p==NULL || p->len<0)
	{
		printf("尾插失败\n");
		return -1;
	}
	Pliink t=p;
	for(int i=0;i<p->len;i++)
		t=t->next;
	Pliink m=malloc(sizeof(liink));
	m->data=e;
	m->next=t->next;
	t->next=m;
	p->len++;
	return 0;
}
//
int rear_delete(Pliink p)
{
	Pliink t=p;
	for(int i=0;i<p->len-1;i++)
		t=t->next;
	Pliink t1=t->next;
	t->next=NULL;
	free(t1);
	t1=NULL;
	p->len--;
	return 0;
}
//
int destroy_link(Pliink p)
{
	Pliink t=p;
	while(p!=NULL)
	{
		t=t->next;
		free(p);
		p=t;
	}
	return 0;
}
//
void output_liink(Pliink p)
{
	Pliink t=p;
	for(int i=0;i<p->len;i++)
	{
		t=t->next;
		printf("第%d个节点的数据为：%d\n",i+1,t->data);
	}
}
